<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.5"/>
<title>iic: xiic_slave_example.c File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
<link href="HTML_custom.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="xlogo_bg.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">iic
   </div>
   <div id="projectbrief">Vitis Drivers API Documentation</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.5 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Overview</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="globals.html"><span>APIs</span></a></li>
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="pages.html"><span>Examples</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('xiic__slave__example_8c.html','');});
</script>
<div id="doc-content">
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">xiic_slave_example.c File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Overview</h2>
<div class="textblock"><p>This file consists of a Interrupt mode design example which uses the Xilinx IIC device and <a class="el" href="struct_x_iic.html" title="The XIic driver instance data. ">XIic</a> driver to exercise the slave functionality of the IIC device. </p>
<p>The <a class="el" href="group___overview.html#ga24873473751e355c82bb074a0d42ddbc" title="This function sends data as a slave on the IIC bus and should not be called until an event has occurr...">XIic_SlaveSend()</a> API is used to transmit the data and <a class="el" href="group___overview.html#ga25dc714d97f71049154461e1ff16bcad" title="This function sends data as a slave on the IIC bus and should not be called until an event has occurr...">XIic_SlaveRecv()</a> API is used to receive the data.</p>
<p>The example is tested on ML300/ML310/ML403/ML501 Xilinx boards.</p>
<p>The IIC devices that are present on the Xilinx boards donot support the Master functionality. This example has been tested with an off board external IIC Master device and the IIC device configured as a Slave.</p>
<p>This code assumes that no Operating System is being used.</p>
<dl class="section note"><dt>Note</dt><dd></dd></dl>
<p>None.</p>
<pre>
MODIFICATION HISTORY:</pre><pre>Ver   Who  Date  Changes
</p>
<hr/>
<p>
1.00a mta  03/01/06 Created.
2.00a ktn  11/17/09 Updated to use the HAL APIs and replaced call to
              XIic_Initialize API with XIic_LookupConfig and
              XIic_CfgInitialize. Some of the macros have been
              renamed in the IIC driver and some renamed macros are
              used in this example.
3.4   ms   01/23/17 Added xil_printf statement in main function to
                    ensure that "Successfully ran" and "Failed" strings
                    are available in all examples. This is a fix for
                    CR-965028.
3.10  gm   07/09/23 Added SDT support.</pre><pre></pre> </div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a7f5dc26ef1947d1825780346d26d5f70"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xiic__slave__example_8c.html#a7f5dc26ef1947d1825780346d26d5f70">IicSlaveExample</a> (void)</td></tr>
<tr class="memdesc:a7f5dc26ef1947d1825780346d26d5f70"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function writes and reads the data as a slave.  <a href="#a7f5dc26ef1947d1825780346d26d5f70">More...</a><br/></td></tr>
<tr class="separator:a7f5dc26ef1947d1825780346d26d5f70"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f41d940d34ed71035e6f6aeb24bdf67"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xiic__slave__example_8c.html#a0f41d940d34ed71035e6f6aeb24bdf67">SlaveWriteData</a> (u16 ByteCount)</td></tr>
<tr class="memdesc:a0f41d940d34ed71035e6f6aeb24bdf67"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function writes a buffer of bytes to the IIC bus when the IIC master initiates a read operation.  <a href="#a0f41d940d34ed71035e6f6aeb24bdf67">More...</a><br/></td></tr>
<tr class="separator:a0f41d940d34ed71035e6f6aeb24bdf67"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a91e062862cf2b2bf6c6f8120baa882be"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xiic__slave__example_8c.html#a91e062862cf2b2bf6c6f8120baa882be">SlaveReadData</a> (u8 *BufferPtr, u16 ByteCount)</td></tr>
<tr class="memdesc:a91e062862cf2b2bf6c6f8120baa882be"><td class="mdescLeft">&#160;</td><td class="mdescRight">This function reads a buffer of bytes when the IIC Master on the bus writes data to the slave device.  <a href="#a91e062862cf2b2bf6c6f8120baa882be">More...</a><br/></td></tr>
<tr class="separator:a91e062862cf2b2bf6c6f8120baa882be"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a840291bc02cba5474a4cb46a9b9566fe"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="xiic__slave__example_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main</a> (void)</td></tr>
<tr class="memdesc:a840291bc02cba5474a4cb46a9b9566fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">Main function to call the IIC Slave example.  <a href="#a840291bc02cba5474a4cb46a9b9566fe">More...</a><br/></td></tr>
<tr class="separator:a840291bc02cba5474a4cb46a9b9566fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a7f5dc26ef1947d1825780346d26d5f70"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int IicSlaveExample </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function writes and reads the data as a slave. </p>
<p>The IIC master on the bus initiates the transfers.</p>
<dl class="section return"><dt>Returns</dt><dd>XST_SUCCESS if successful else XST_FAILURE.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>None. </dd></dl>

<p>References <a class="el" href="struct_x_iic___config.html#ae783f76b6713be6d9b77060d77328102">XIic_Config::BaseAddress</a>, <a class="el" href="xiic__slave__example_8c.html#a91e062862cf2b2bf6c6f8120baa882be">SlaveReadData()</a>, <a class="el" href="xiic__slave__example_8c.html#a0f41d940d34ed71035e6f6aeb24bdf67">SlaveWriteData()</a>, <a class="el" href="group___overview.html#gab3f6ec08afcad8f35f9ee2c9e2531366">XII_ADDR_TO_RESPOND_TYPE</a>, <a class="el" href="group___overview.html#ga301f08e1fa6e74bf4c2885702bf0ff70">XIic_CfgInitialize()</a>, <a class="el" href="group___overview.html#ga50c5aa4448e8993c80ef7b6a87b1aaea">XIic_InterruptHandler()</a>, <a class="el" href="group___overview.html#ga1dcc65dd7cb7863bf6769aed5d785304">XIic_LookupConfig()</a>, <a class="el" href="group___overview.html#gad944f42c3d9972fc2c986a7eed726297">XIic_SetAddress()</a>, <a class="el" href="group___overview.html#ga86b4b2b307df26df2ecac39337c78bed">XIic_SetRecvHandler()</a>, <a class="el" href="group___overview.html#gad33428830e9016ef50c1deae59d1e604">XIic_SetSendHandler()</a>, <a class="el" href="group___overview.html#gaa74a6884f6dfc826a10768d7d0333991">XIic_SetStatusHandler()</a>, and <a class="el" href="group___overview.html#ga543dde34d5a2f34269641ec3ab1bfdfe">XIic_SlaveInclude()</a>.</p>

<p>Referenced by <a class="el" href="xiic__slave__example_8c.html#a840291bc02cba5474a4cb46a9b9566fe">main()</a>.</p>

</div>
</div>
<a class="anchor" id="a840291bc02cba5474a4cb46a9b9566fe"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int main </td>
          <td>(</td>
          <td class="paramtype">void&#160;</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Main function to call the IIC Slave example. </p>
<dl class="section return"><dt>Returns</dt><dd>XST_SUCCESS if successful else XST_FAILURE.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>None. </dd></dl>

<p>References <a class="el" href="xiic__slave__example_8c.html#a7f5dc26ef1947d1825780346d26d5f70">IicSlaveExample()</a>.</p>

</div>
</div>
<a class="anchor" id="a91e062862cf2b2bf6c6f8120baa882be"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int SlaveReadData </td>
          <td>(</td>
          <td class="paramtype">u8 *&#160;</td>
          <td class="paramname"><em>BufferPtr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">u16&#160;</td>
          <td class="paramname"><em>ByteCount</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function reads a buffer of bytes when the IIC Master on the bus writes data to the slave device. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">BufferPtr</td><td>contains the address of the data buffer to be filled. </td></tr>
    <tr><td class="paramname">ByteCount</td><td>contains the number of bytes in the buffer to be read.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>XST_SUCCESS if successful else XST_FAILURE.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>None </dd></dl>

<p>References <a class="el" href="struct_x_iic.html#a389e4b8500329c37d7835098408b5ed3">XIic::BaseAddress</a>, <a class="el" href="group___overview.html#ga17d0df7020d5264d20bbc36d276e276e">XIic_IntrGlobalDisable</a>, <a class="el" href="group___overview.html#ga7071fcf4cf60d65fd862653fa34faa21">XIic_IntrGlobalEnable</a>, <a class="el" href="group___overview.html#ga25dc714d97f71049154461e1ff16bcad">XIic_SlaveRecv()</a>, <a class="el" href="group___overview.html#ga5f4e497710a9c3719f27d40faa74a10f">XIic_Start()</a>, and <a class="el" href="group___overview.html#gaaa989e0128057bf11803825d774d496f">XIic_Stop()</a>.</p>

<p>Referenced by <a class="el" href="xiic__slave__example_8c.html#a7f5dc26ef1947d1825780346d26d5f70">IicSlaveExample()</a>.</p>

</div>
</div>
<a class="anchor" id="a0f41d940d34ed71035e6f6aeb24bdf67"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int SlaveWriteData </td>
          <td>(</td>
          <td class="paramtype">u16&#160;</td>
          <td class="paramname"><em>ByteCount</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>This function writes a buffer of bytes to the IIC bus when the IIC master initiates a read operation. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">ByteCount</td><td>contains the number of bytes in the buffer to be written.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>XST_SUCCESS if successful else XST_FAILURE.</dd></dl>
<dl class="section note"><dt>Note</dt><dd>None. </dd></dl>

<p>References <a class="el" href="struct_x_iic.html#a389e4b8500329c37d7835098408b5ed3">XIic::BaseAddress</a>, <a class="el" href="group___overview.html#ga17d0df7020d5264d20bbc36d276e276e">XIic_IntrGlobalDisable</a>, <a class="el" href="group___overview.html#ga7071fcf4cf60d65fd862653fa34faa21">XIic_IntrGlobalEnable</a>, <a class="el" href="group___overview.html#ga24873473751e355c82bb074a0d42ddbc">XIic_SlaveSend()</a>, <a class="el" href="group___overview.html#ga5f4e497710a9c3719f27d40faa74a10f">XIic_Start()</a>, and <a class="el" href="group___overview.html#gaaa989e0128057bf11803825d774d496f">XIic_Stop()</a>.</p>

<p>Referenced by <a class="el" href="xiic__slave__example_8c.html#a7f5dc26ef1947d1825780346d26d5f70">IicSlaveExample()</a>.</p>

</div>
</div>
</div><!-- contents -->
</div><!-- doc-content -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
	<p class="footer">&copy; Copyright 2015-2022 Xilinx, Inc. All Rights Reserved.</p>
	<p class="footer">&copy; Copyright 2022-2023 Advanced Micro Devices, Inc. All Rights Reserved.</p>
</div>
</body>
</html>
